(ดูเฉลยข้างล่าง)
.
.
.
.
.
.
.
.
.
.
.
.
โค้ดนี้เขียนด้วยภาษา javascript
ฝั่งซ้ายมือคนดู เขียนแบบฟังก์ชันปกติธรรมดา เป็นการรีเทิร์น return a*b*c ตรงไปตรงมา
.
.
ฝั่งขวามือคนดู ที่แปลกประหลาดพิสดาร
- เป็นการใช้ inner function ประกาศฟังก์ชันซ้อนกัน 3 ตัว
- มีการใช้ closures
ทำให้ฟังก์ชันลูกมองเห็นและจำค่าตัวแปรของฟังก์ชันก่อนหน้าที่ครอบข้างนอกมันได้
- จึงทำให้เวลาเรียก cal() ทีละครั้ง ตัวประโยค return a*b*c เสมือนประมวลผลนิพจน์ (expressioin) บางส่วนเอาไว้
.
โดยทั้งนี้โค้ดสองตัวอย่างให้ผลลัพธ์เหมือนกัน ฝั่งขวามือจะออกแนว functional programming หน่อยๆ แต่จะเปลือง call stack
.
.
ต่อไปคือชั่วโมงขายของ
ถ้าใครสนใจความแปลกประหลาดพิสดารของภาษา javascript (คนละตัวกับภาษา java นะ) ภาษาที่ขึ้นชื่อว่าเข้าใจยากทีสุดตัวหนึ่ง ก็แนะนำอ่านหนังสือในตำนาน เพราะพิมพ์มานาน ได้จากเล่มนี้
.
https://www.se-ed.com/…/พัฒนาเว็บแอปพลิเคชั่นด้วย-JavaScrip…
.
✍เขียนโดย โปรแกรมเมอร์ไทย thai programmer